#include "Agora.h"

#ifdef __cplusplus
extern "C" {
#endif

int AgoraNetwork_IsConnected(void *agora)
{
	try
	{
		return (reinterpret_cast<Agora*>(agora)->IsConnected() ? 1 : 0);
	}
	catch(...)
	{
		return 0; // ErrorManager = TODO
	}
}

void AgoraNetwork_Disconnect(void *agora)
{
		try
	{
		reinterpret_cast<Agora*>(agora)->Disconnect();
	}
	catch(...)
	{
		return; // ErrorManager = TODO
	}
}

int AgoraNetwork_Connect(void *agora, char *address, int port)
{
	try
	{
		return reinterpret_cast<Agora*>(agora)->Connect(std::string(address), port);
	}
	catch(...)
	{
		return -1; // ErrorManager = TODO
	}
}

unsigned int AgoraNetwork_GetUploadRate(void *agora)
{
	try
	{
		return reinterpret_cast<Agora*>(agora)->GetUploadRate();
	}
	catch(...)
	{
		return 0; // ErrorManager = TODO
	}
}

unsigned int AgoraNetwork_GetDownloadRate(void *agora)
{
	try
	{
		return reinterpret_cast<Agora*>(agora)->GetDownloadRate();
	}
	catch(...)
	{
		return 0; // ErrorManager = TODO
	}
}

#ifdef __cplusplus
}
#endif